package bookManage.Model.service;

import bookManage.Model.entity.Book;
import bookManage.Model.entity.BookContent;
import bookManage.Model.entity.BookShow;

import java.sql.SQLException;
import java.util.List;

/**
 * @BelongsProject: library-management-system-master
 * @BelongsPackage: bookManage.Model.service
 * @Author: yuan wang
 * @CreateTime: 2023-02-05  21:12
 * @Description: 重新整合优化了Service层，整合了Dao的一些方法
 * @Version: 1.0
 */
public interface Service {
    /**
     * @description: 添加书籍
     * @author: yuan wang
     * @date: 2023/1/29 15:18
     * @param: book 传入Book类参数，只针对书籍信息设置参数，其他信息默认为空
     * @return: int 返回修改行数，添加成功为1，失败为0
     */
    int addBook(Book book) throws SQLException;

    /**
     * @description: 删除书籍
     * @author: yuan wang
     * @date: 2023/1/29 15:20
     * @param: number 传入编号，从Servlet中获得编号参数
     * @return: int 返回修改行数，删除成功为1，失败为2
     */
    int delBook(int id) throws SQLException;


    /**
     * @description: 编辑书籍（先把原来数据存进来，再修改）
     * @author: yuan wang
     * @date: 2023/2/1 10:58
     * @param: book 传入书籍
     * @param: oldNumber 传入原编号
     * @return: int 返回修改行数，修改成功则为正数，失败则为0
     */
    int editBook(Book book, String oldNumber) throws SQLException;


    /**
     * @description: 查询书籍(非具体页面)
     * @author: yuan wang
     * @date: 2023/1/29 15:47
     * @param: status 传入状态，如需查询全部书籍则传空字符串
     * @return: java.util.List<bookManage.Model.entity.Book> 返回书籍类列表
     */
    List<BookShow> queryBook(String status) throws SQLException;

    /**
     * @description: 查询书籍（具体页面）无参方法
     * @author: yuan wang
     * @date: 2023/2/1 15:32
     * @param: number 传入书籍编号
     * @return: bookManage.Model.entity.Book 返回该书籍的详细信息
     */
    Book queryBookContent(String number) throws SQLException;

    /**
     * @description: 查询书籍（具体页面）有参方法
     * @author: yuan wang
     * @date: 2023/2/1 22:24
     * @param: number 传入书籍编号
     * @return: java.util.List<bookManage.Model.entity.Book> 返回该相同书籍中多本书籍的不同状态等信息
     */
    List<BookContent> queryBookContentList(String number) throws SQLException;

    /**
     * @description: 实现模糊查询
     * @author: yuan wang
     * @date: 2023/2/7 16:30
     * @param: bookName
     * @return: java.util.List<bookManage.Model.entity.BookShow>
     */
    List<BookShow> dimQueryBook(String bookName) throws SQLException;
}
